import { defineStore } from 'pinia'
import { postLoginAPI, getMemberAPI, putMemberAPI } from '@/api/member'
// 你可以任意命名 `defineStore()` 的返回值，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。
// (比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useMemberStore = defineStore('member', {
  state: () => ({
    count: 0,
    name: 'Eduardo',
    profile: '',
    token: uni.getStorageSync('token') || '',
  }),
  getters: {
    doubleCount: (state) => state.count * 2,
  },
  actions: {
    increment() {
      this.count++
      // uni.setStorage({
      //   key: 'count',
      //   data: this.count,
      // })

      uni.getStorage({
        key: 'count',
        success: (res) => {
          console.log(res.data)
        },
      })
    },
    async login(data) {
      try {
        const res = await postLoginAPI(data)
        // 登录成功后的逻辑
        uni.setStorage({
          key: 'token',
          data: res.result.token,
        })
      } catch (error) {
        console.error('登录失败:', error)
        // 登录失败后的逻辑，例如提示用户
        uni.showToast({
          title: '登录失败，请重试',
          icon: 'none',
        })
      }
    },
    async getProfile() {
      try {
        const res = await getMemberAPI()
        this.profile = res.result
        // console.log('profile', this.profile)
        // uni.setStorage({
        //   key: 'profile',
        //   data: this.profile,
        // })
      } catch (error) {
        console.error('获取用户信息失败:', error)
        uni.showToast({
          title: '获取用户信息失败，请重试',
          icon: 'none',
        })
      }
    },
    async updateProfile(data) {
      try {
        const res = await putMemberAPI(data)
        this.profile = res.result
        uni.showToast({
          title: '更新用户信息成功',
          icon: 'success',
        })
      } catch (error) {
        console.error('更新用户信息失败:', error)
        uni.showToast({
          title: '更新用户信息失败，请重试',
          icon: 'none',
        })
      }
    },
    async logout() {
      // 清除用户信息和 token
      this.profile = ''
      this.token = ''
      uni.removeStorage({ key: 'token' })
      uni.removeStorage({ key: 'userInfo' })
      uni.showToast({
        title: '退出成功',
        icon: 'success',
      })
      uni.reLaunch({
        url: '/pages/index/index',
      })
    },
  },
})
